package br.com.etecmatao.admin.controller;

import br.com.etecmatao.business.BusinessLocator;
import br.com.etecmatao.business.impl.BusinessLocatorImpl;
import br.com.etecmatao.model.Estagio;
import br.com.etecmatao.model.Fotos;
import br.com.etecmatao.model.Noticias;
import java.awt.image.BufferedImage;
import java.io.BufferedInputStream;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import javax.imageio.ImageIO;

@ManagedBean
public class Bean {

    private Noticias noticias;
    private Estagio estagio;
    private BusinessLocator businessLocator;
    private DataModel<Noticias> listaNoticias;
    private DataModel<Estagio> listaEstagio;
    private DataModel<Fotos> listaImagem;

    public Bean() {
        businessLocator = new BusinessLocatorImpl();
    }

    public Estagio getEstagio() {
        return estagio;
    }

    public void setEstagio(Estagio estagio) {
        this.estagio = estagio;
    }

    public Noticias getNoticias() {
        return noticias;
    }

    public void setNoticias(Noticias noticias) {
        this.noticias = noticias;
    }

    public DataModel<Estagio> getListaEstagio() {
        listaEstagio = new ListDataModel<Estagio>(businessLocator.getEstagioBusiness().finByAll());
        return listaEstagio;
    }

    public void setListaEstagio(DataModel<Estagio> lista) {
        this.listaEstagio = lista;
    }

    public DataModel<Noticias> getListaNoticias() {
        listaNoticias = new ListDataModel<Noticias>(businessLocator.getNoticiasBusiness().finByAll());
        return listaNoticias;
    }

    public void setListaNoticias(DataModel<Noticias> lista) {
        this.listaNoticias = lista;
    }

    public DataModel<Fotos> getListaImagem() {
        listaImagem = new ListDataModel<Fotos>(businessLocator.getFotosBusiness().finByAll());
        return listaImagem;
    }

    public void setListaImagem(DataModel<Fotos> lista) {
        this.listaImagem = lista;
    }

    public String lerNoticias() {
        noticias = new Noticias();
        noticias = listaNoticias.getRowData();
        return "leitura";
    }

    public String lerEstagio() {
        estagio = new Estagio();
        estagio = listaEstagio.getRowData();
        return "lerVagas";
    }

    public void montarImagem(OutputStream os, Object data) throws IOException {
        byte[] bytes = businessLocator.getFotosBusiness().finByAll().get(-1).getImagem();
        BufferedImage img = ImageIO.read(new BufferedInputStream(new ByteArrayInputStream(bytes)));
        ImageIO.write(img, "jpg", os);
    }

}